if(!$$.ui)$$.ui = {};
$$$.url = {
	/**
	 * 统一定位资源符。
	 * @type {String}
	 */
	 url: null
	 
	/**
	 * 一个引用，指向子 iframe 的 window 对象。
	 * @type {DOM.Window}
	 */ 
	,frameUI : null
	
	/**
	 * @return {DOM.Window}
	 */
	,getFrameUI : function(){
		if( this.frameUI == null){
			this.frameUI = $$.getEl('myIframe').contentWindow;
		}
		
		return this.frameUI;
	}
	
	/**
	 * @param  {Boolean} isCopy 是否复制对象。
	 * @return {DOM.Window.Location}
	 */
	,getLocation : function(isCopy){
		if(isCopy == undefined) isCopy = true;

		var location = this.getFrameUI().document.location;
		
		return isCopy ? $$.apply({}, location) : location;
	}
	
	/**
	 * 输入 url，对 iframe 窗口跳转。
	 * @param {虚参数}	e
	 * @param {String}	path
	 */
	,assign : function(e, path){

		var url = '/';
		url += $$.cfg.edk_appID;
		url += path;
		$$.log('跳转到' + path + '……');
		
		$$$.url.getLocation(false).assign(url);
	}
	
	/**
	 * @return {Object}
	 */
	,getQuery : function(){
		var output = {};
		
		var location = this.getLocation(false);
		var query = location.search;
		
		if( query){
			query = query.split('&');
			
			var arr;
		    var key, value;
		    var prt = $$.getPrimitives;
		    
		    for (var i = 0, j = query.length; i < j; i++) {
		        arr = query[i].split('=');
		        key = arr[0], value = arr[1];
		        
		        output[i==0 ? key.substring(1) :key] = prt(value);
		    }
		}
		
		return output;
	}
};

/**
 * Data Transfer Object 者，客户端向服务端请求的数据对象也，即“数据传输对象：。 
 * 数据传输对象是为了某个特殊的层设计的，目的就是为了隔离各个层之间的直接数据操作。减少大系统的复杂性。
 */
$$.ui.DTO = function(){
	/**
	 * @return {XMLDocument}
	 */
	this.getTpl = function(url){
		var tpl = this.constructor.tpl;	// it's a STATIC Member!
		if(!tpl && url){
			$$.log('正在加载装饰文件……');
			tpl = this.constructor.tpl = $$.XML.loadXML(url);
			
			/* 设置作用域 */
			$$.XML.getNode.scope = tpl;
			/* 加入新方法（静态的） */
			this.constructor.getXmlNode = $$.XML.getNode.delegate();
			$$.log('获取模板成功！');
		}
		
		return tpl;
	};
	
	/**
	 * 输入一个id，返回其实体。
	 * @param  {Number} id
	 * @return {Entity}
	 */
	this.findById = function(id){
		debugger;
		return data;
	}		
};